home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / jcool01.zip / CHANGES < prev    next >
Text File  |  1992-11-30  |  4KB  |  84 lines

  1. This is a list of the major changes I (Jamshid) made to GECOOL2.1 when
  2. making JCOOL0.1:
  3.  
  4. 9. I made numerous changes that are workarounds for BC++ 3.1 bugs.
  5. While none of these changes should cause JCOOL to be uncompilable by
  6. other compilers, they should be removed soon.  I've marked them with
  7. "##" comments to make them easy to find and correct.  They include:
  8.    a) 'inline' not allowed in class when declaring    friends or ctor:
  9.           /*inline##*/ friend void f();
  10.    b) templates not allowed to mutually refer to each other (really
  11.       ugly workaround -- see Set.h,etc. and Envelope.h)
  12.    c) nested typedefs could not be used outside of class definition, so
  13.       member funcs had to be defined inside class or using real types in
  14.       parameter list or as return type.
  15.    d) BC++ headers defined some standard functions as macros with certain
  16.       optimizations (eg, -Oi).  They should be inline funcs in C++.
  17.    e) you need the dummy-typedef Pair<T1,T2> before using the type
  18.       Association<T1,T2>
  19.    d) Return values of type double are slightly off when used immediately
  20.       in an expression.  In some places I used the workaround of first
  21.       assigns the value to a temporary.
  22.  
  23. 8. I'm not including the 'man' directory from GECOOL, nor have I
  24. updated it (I didn't even completely keep up with the header file
  25. comments :-( ).
  26.  
  27. 7. See the source files for specifics -- I always updated the History
  28. section ("JAM").
  29.  
  30. 6. Renamed Base_Binary_Node and Base_Binary_Tree files to base_bnn
  31. and base_bnt since they clashed in the first 8 chars.  I created a
  32. base_bin.h file which includes both so that #include statements are
  33. portable across file systems.
  34.  
  35. 5. Redesigned Range<T,T min, T max> because I thought that wasn't legal.
  36. I'll be changing that back soon.
  37.  
  38. 4. Several other things to make more correct/ANSI conforming/portable
  39. (#if'd UNIX-specifics in Timer, long=>size_t, defined static data members,
  40. made to use <limits.h> instead of <values.h>).
  41.  
  42. 3. Did away with obsolete form() in i/o.  Uses <iomanip.h> instead.
  43.  
  44. 2. Completely did away with need for COOL's special cpp.  The code now
  45. uses real templates.  Involved lots of tedious changes, but no major
  46. redesign.  I also had to work around lots of BC++ 3.1 bugs -- I'm
  47. sure other current compilers will also need work.
  48.  
  49. 1. Standardized header files -- no more #ifs hacks and extern "C"
  50. declarations in COOL source.  Code assumes ANSI C headers and that
  51. they have extern "C" wrapper.  I'd much rather (and did) hack the 
  52. environment than COOL source files.
  53.  
  54.  
  55. --- Below are the 'changes' that came with GECOOL1.2 ---
  56.  
  57. This is the list of changes to COOL as distributed by Texas Instruments:
  58.  
  59. 5. Add memory management with Handle and Shared classes. Avoid double deep
  60. copies on return-by-value with Envelope. 
  61.  
  62. 4. The following classes are deleted: generic, exception, symbol, package.
  63. Property list is reimplemented to provide conversion and type-checking at
  64. run time and compile time.
  65.  
  66. 3. Remove macro from the library.
  67.     Macros depend on COOL cpp, which is non standard, slow, and impossible
  68.     to maintain (gotos, finite-state-machine).
  69.     Macros are replaced by #defines, inlines, or by copy-code.
  70.  
  71. 2. Remove exception handling from library.
  72.     RAISE(error, ...) has been replaced with printf(...) followed by abort().
  73.     The resumptive exception will be reimplemented with strings instead of
  74.     symbols, and without setjmp, longjmp.
  75.  
  76. 1. Remove generic class from all classes. 
  77.     The runtime type-checking in Ice requires the use of global symbols, 
  78.     and maintenance of a data-base file sym_package.p at compilation time.
  79.  
  80.     
  81.  
  82.  
  83.     
  84.